s = {1, 2, 3, 4}
# 创建集合
ss = set('1234')
print(type(s))
print(type(ss))

# 集合的添加
s.add(6)
print(s)
# 删除
s.pop()
print(s)

s.remove(4)
print(s)

# # 创建元组
# 创建空元组
tuple1 = ()
print(tuple1)

# 创建带有元素的元组，可以有元素类型
tuple2 = (1, "a", 3, "hello", 2.2)
print(tuple2)

# 创建只有一个元素的元组
tuple3 = (1,)
print(tuple3)
print(type(tuple3))


tuple1 = tuple('hello,world')
print(tuple1)

list1 = ['Python', 'Java', 'C++', 'C']
tuple2 = tuple(list1)
print(tuple2)

tuple1 = tuple(('w', 'o', 'x', 'i', 'a', 'n', 'g', 'f', 'a', 'n', 'g', 'j', 'i', 'a'))
print(tuple1)

i = 10
if i > 1:
    pass
    print(i)

t1 = (1, 2, 3)
t2 = ('a', 'b', 'c')

# 连接组合
t3 = t1 + t2
print(t3)

# t3 = (1, 2, 3, 5, 6)
# print(t3)
# del t3
# print(t3)

# n = input('请输入联系人姓名：')
# t = input('请输入联系人电话：')
# e = input('请输入联系人邮箱：')
# a = input('请输入联系人地址：')
# t1 = ("姓名：", n, "电话:", "邮箱：", e, "地址：", a)
# print(t1)

l1 = []
print(l1)

# 创建带有元素的列表
l2 = [1, 2, "python", "java"]
print(l2)
print(type(l2))

# 使用list()函数将其他数字类型数据转换为列表
# 创建空列表
l3 = list()
print(l3)

# 将字符串转化成列表
l4 = list("hello world")
print(l4)

# 将元组转化成列表
t5 = tuple("hello")
print(t5)
l5 = list(t5)
print(l5)

# 将range函数转化成列表
l6 = list(range(5))  # 0 1 2 3 4
print(l6)
# 访问列表中的的元素
# 使用索引进行访问单个元素
l7 = [1, 2, 3, 4, 'p', 'w', 'r']

# 使用正索引访问p元素
print(l7[4])
# 使用负索引访问w元素
print(l7[-2])

# 使用切片访问一组元素
# 使用切片访问元素的格式：代码如下：
l8 = ['p', 'y', 't', 'h', 'o', 'n']
# 使用正数切片，截取索引为2,3,4的元素，默认步长为1
print(l8[2:5])
# 取前三个元素
print(l8[:3])
# 取后三个元素
print(l8[3:])
# 使用整数切片，截取索引为1-5的元素，步长为2
print(l8[1:2])
# 使用负数切片
print(l8[-3:-1])
# 步数如果是负数，即从右向左提取元素
print(l8[::-1])
# 遍历循环
# 使用for循环便利列表
l9 = [1, 2, 3, 4, "python", "java", 'c']
for i in l9:
    print(i)
# 修改列表元素
# 修改单个元素
l10 = [1, 2, 3, 4, 5, 6, 7]
# 将索引为2的元素值修改为100
l10[2] = 100
print(l10)

# 修改多个元素
l11 = [12, 13, 14, 15, 16, 17, 18]
# 修改第1~4个元素的值(不包含第四个元素)
l11[1:4] = [77, 96, 71]
print(l11)

# 列表中添加元素
# append()用于在列表的末尾追加元素

l12 = ['a', 'b', 'c']
l12.append('f')
print(l12)
# 列表添加列表

l12.append(['e', 'f'])
print(l12)
# extend()在列表的末尾一次添加多个元素

l13 = ['a', 'b', 'C']
l13.extend('d')
print(l13)
# 列表添加列表
l13.extend(['e', 'f', 'g', 'h'])
print(l13)
l13.extend('world')
print(l13)

l14 = ['python', 'C', 'Java']
l14.insert(2, 'go')
print(l14)

# 删除颜色
l15 = ['a', 'b', 'c', 'd']
l15.remove('a')
print(l15)

# l15.remove('f')

l15 = ['a', 'b', 'c' 'd', 'a']
l15.remove('b')
print(l15)

# 若元素不在列表中，删除会报错
# l15.remove('f')

l16 = [10, 56, 34, 2, 56, 44, 7]
# 删除所以为3的元素
l16.pop(3)
print(l16)
# 删除最后一个元素
l16.pop()
print(l16)
# pop()删除指定索引处位置的元素
l16 = [10, 2, 4, 6, 8, 'a']
l16.pop(3)
print(l16)
# 删除最后一个元素
l16.pop()
print(l16)

l17 = ['a', 'b', 2, 3, 5, 9]
# del 删除单个元素3
del l17[4]
print(l17)
# del删除一段连续的元素，使用切片形式
del l17[1:3]
print(l17)

# 清空列表
l18 = [6, 8, 'a', 0]
l18.clear()
print(l18)

# # 任务
# # 创建两个空列表name_list和phone_list，用于存储联系人姓名和电话；
# # 向列表中添加联系人信息；
# # 输入联系人编号修改信息；
# # 输入联系人编号删除信息；
# # # 使用clear()清空通讯录。name_list=['张三'， ’李四', '王五', ‘maliu'],phone_list=[123, 236, 258, 598

# name_list = []
# phone_list = []
# while 1:
#     print("菜单：1.添加联系人 2.修改联系人 3。删除联系人 ")
#     chioce = input("请输入选择：")
#
#     if chioce == "1":
#         name_list.append(input("请输入联系人姓名："))
#         phone_list.append(input("请输入联系人电话："))
#         print(name_list)
#         print(phone_list)
#
#     elif chioce == "2":
#         num = int(input("请输入联系人编号："))
#         if len(name_list) > 0 and num <= len(name_list):
#             name_list[num - 1] = input("修改联系人姓名")
#             phone_list[num - 1] = input("修改联系电话")
#         else:
#             print("联系人编号输入有误")
#
#     elif chioce == "3":
#         num = int(input("请输入联系人编号："))
#         if len(name_list) > 0 and num <= len(name_list):
#             name_list.pop(num - 1)
#             phone_list.pop(num - 1)
#         else:
#             print("联系人编号输入有误")
#     else:
#         print("显示联系人信息")
#         print(name_list)
#         print(phone_list)

ls1 = [1, 5, 7, 'a', 'a', 'c', 'b', 6, 4, 1]
print(ls1.index('a'))
print(ls1.index('a', 4))
print(ls1.index('c', 3, 7))

ls2 = [1, 3, 5, 7, 'a', 'b', 2, 5, 5, 7, 1]
print(ls2.count(8))
print(ls2.count(5))
print(ls2.count('f'))

# 元素是字符串的代表
ls3 = ['1', '3', '44', '23', '99', '88', '56', '233']
# 默认升序
ls3.sort()
print(ls3)
# 降序reverse=True
ls3.sort(reverse=True)
print(ls3)

# 元素是数值的排序
ls4 = [1, 3, 44, 23, 99, 88, 56, 233]
# 默认升序
ls4.sort()
print(ls4)
# 降序 reversed=True
ls4.sort(reverse=True)
print(ls4)

d1 = {'python': 98, "可视化": 89, "英语": 85}
print(type(d1))

d2 = {(23, 89): "great", 30: [1, 3, 4]}
print(type(d2))
# 创建空括号
d3 = {}
print(type(d3))

d4 = dict(数学=98, 语文=87, 英语=89)
print(d4)

# 字典名
d5 = {'数学': 95, '英语': 92, '语文': 84}
# 键存在
print((d5['数学']))

# get字典名
d6 = {'数学': 95, '英语': 92, '语文': 84}
print(d6.get('英语'))
print(d6.get('python'))
print(d6.get('python', '该建不存在'))

d7 = {'数学': 95, '英语': 92, '语文': 84, 'Python': 99}
d7['可视化'] = 100
print(d7)

# 字典修改键值对
d8 = {'数学': 95, '英语': 92, '语文': 84, 'Python': 99}
d8['语文'] = 100
print(d8)

# 字典删除键值

d9 = {'数学': 95, '英语': 92, '语文': 84, 'Python': 99}
del d9['语文']
print(d9)

d9.pop('数字')
print(d9)